package cn.csc.module.pay.dal.mysql.funddetailsinfo;

import java.math.BigInteger;
import java.util.*;

import cn.csc.framework.common.pojo.PageResult;
import cn.csc.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.csc.framework.mybatis.core.mapper.BaseMapperX;
import cn.csc.module.pay.dal.dataobject.funddetailsinfo.PayFundDetailsInfoDO;
import cn.csc.module.pay.dal.dataobject.jzbrefund.PayJzbRefundDO;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import org.apache.ibatis.annotations.Mapper;
import cn.csc.module.pay.controller.admin.funddetailsinfo.vo.*;

/**
 * 用户资金提现分账明细 Mapper
 *
 * @author 华南城
 */
@Mapper
public interface PayFundDetailsInfoMapper extends BaseMapperX<PayFundDetailsInfoDO> {

    default PageResult<PayFundDetailsInfoDO> selectPage(PayFundDetailsInfoPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<PayFundDetailsInfoDO>()
                .eqIfPresent(PayFundDetailsInfoDO::getAppUserId, reqVO.getAppUserId())
                .eqIfPresent(PayFundDetailsInfoDO::getDataId, reqVO.getDataId())
                .eqIfPresent(PayFundDetailsInfoDO::getTradeAmount, reqVO.getTradeAmount())
                .eqIfPresent(PayFundDetailsInfoDO::getTypeId, reqVO.getTypeId())
                .betweenIfPresent(PayFundDetailsInfoDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(PayFundDetailsInfoDO::getId));
    }

    default List<PayFundDetailsInfoDO> selectList(PayFundDetailsInfoExportReqVO reqVO) {
        return selectList(new LambdaQueryWrapperX<PayFundDetailsInfoDO>()
                .eqIfPresent(PayFundDetailsInfoDO::getAppUserId, reqVO.getAppUserId())
                .eqIfPresent(PayFundDetailsInfoDO::getDataId, reqVO.getDataId())
                .eqIfPresent(PayFundDetailsInfoDO::getTradeAmount, reqVO.getTradeAmount())
                .eqIfPresent(PayFundDetailsInfoDO::getTypeId, reqVO.getTypeId())
                .betweenIfPresent(PayFundDetailsInfoDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(PayFundDetailsInfoDO::getId));
    }

    default void updateInfo(PayFundDetailsInfoDO payFundDetailsInfoDO) {
        update(payFundDetailsInfoDO, new LambdaUpdateWrapper<PayFundDetailsInfoDO>()
                .set(PayFundDetailsInfoDO::getStatus, payFundDetailsInfoDO.getStatus())
                .eq(PayFundDetailsInfoDO::getAppUserId, payFundDetailsInfoDO.getAppUserId())
                .eq(PayFundDetailsInfoDO::getDataId, payFundDetailsInfoDO.getDataId()));
    }

    default Integer updateStatusById(BigInteger id, Integer status) {
        LambdaUpdateWrapper<PayFundDetailsInfoDO> userUpdateWrapper = new LambdaUpdateWrapper<>();
        userUpdateWrapper.set(PayFundDetailsInfoDO::getStatus, status);
        userUpdateWrapper.eq(PayFundDetailsInfoDO::getId, id);
        return update(null, userUpdateWrapper);
    }

    default Integer updateStatusByDataId(BigInteger dataId, Integer status) {
        LambdaUpdateWrapper<PayFundDetailsInfoDO> userUpdateWrapper = new LambdaUpdateWrapper<>();
        userUpdateWrapper.set(PayFundDetailsInfoDO::getStatus, status);
        userUpdateWrapper.eq(PayFundDetailsInfoDO::getDataId, dataId);
        return update(null, userUpdateWrapper);
    }

}
